<?php

// 发立得信息发布系统房屋信息版(php+mysql) V1.0
// 演示地址: http://fang.chalide.cn
// 文件路径: usr/list.php
// 文件大小: 13439 字节
// 最后修改时间: 2025-05-23 16:35:21
// 作者: yujianyue
// 邮件: 15058593138@qq.com
// 版权所有,保留发行权和署名权
/**
 * 本文件功能：我的发布
 * 版权声明：保留发行权和署名权
 * 作者信息：15058593138@qq.com
 */

// 获取当前用户
$curr_user = check_login(USER_TYPE_USER);
$db = DB::getInstance();

// 处理AJAX请求
if (isset($_GET['act'])) {
    $act = $_GET['act'];
    
    switch ($act) {
        // 获取信息列表
        case 'list':
            $page = isset($_POST['page']) ? intval($_POST['page']) : 1;
            $limit = 10;
            
            // 构建查询条件
            $where = "user_id = {$curr_user['id']}";
            
            if (!empty($_POST['keyword'])) {
                $keyword = $db->escape($_POST['keyword']);
                $where .= " AND (title LIKE '%$keyword%' OR `desc` LIKE '%$keyword%' OR `keys` LIKE '%$keyword%')";
            }
            
            // 查询总数
            $total = $db->count('info', $where);
            
            // 分页参数
            $pagination = get_pagination($total, $page, $limit);
            
            // 查询列表
            $sql = "SELECT * FROM info 
                    WHERE $where 
                    ORDER BY gai_time DESC 
                    LIMIT {$pagination['offset']}, {$pagination['limit']}";
            
            $list = $db->getAll($sql);
            
            // 处理列表数据
            foreach ($list as &$item) {
                // 处理时间格式
                $item['add_time'] = format_datetime($item['add_time'], 'Y-m-d H:i');
                $item['gai_time'] = format_datetime($item['gai_time'], 'Y-m-d H:i');
                
                // 获取第一张图片
                $img_sql = "SELECT path FROM imgs WHERE info_id = {$item['id']} ORDER BY sort ASC, id ASC LIMIT 1";
                $img = $db->getOne($img_sql);
                $item['img'] = $img ? $img : 'imgs/default.jpg';
                
                // 加载类型文本
                $type1_json = file_get_contents('./inc/type1.json');
                $type2_json = file_get_contents('./inc/type2.json');
                $type1_arr = json_decode($type1_json, true);
                $type2_arr = json_decode($type2_json, true);
                
                $item['type1_text'] = isset($type1_arr[$item['type1']]) ? $type1_arr[$item['type1']] : '';
                $item['type2_text'] = isset($type2_arr[$item['type2']]) ? $type2_arr[$item['type2']] : '';
                
                // 生成查看详情token
                $item['token'] = md5($item['id'] . 'info_detail');
            }
            
            // 返回数据
            json_msg(1, '获取成功', [
                'list' => $list,
                'page' => $pagination['page'],
                'total_page' => $pagination['total_page'],
                'total' => $pagination['total']
            ]);
            break;
            
        // 修改状态
        case 'status':
            if (empty($_POST['id'])) {
                json_msg(0, '参数错误');
            }
            
            $id = intval($_POST['id']);
            
            // 检查信息是否存在且属于当前用户
            $sql = "SELECT id, open2 FROM info WHERE id = $id AND user_id = {$curr_user['id']}";
            $info = $db->getRow($sql);
            
            if (!$info) {
                json_msg(0, '信息不存在');
            }
            
            // 切换状态
            $status = $info['open2'] == 1 ? 0 : 1;
            $result = $db->update('info', ['open2' => $status], "id = $id");
            
            if ($result) {
                json_msg(1, '操作成功');
            } else {
                json_msg(0, '操作失败，请稍后重试');
            }
            break;
            
        // 刷新时间
        case 'refresh':
            if (empty($_POST['id'])) {
                json_msg(0, '参数错误');
            }
            
            $id = intval($_POST['id']);
            
            // 检查信息是否存在且属于当前用户
            $sql = "SELECT id FROM info WHERE id = $id AND user_id = {$curr_user['id']}";
            $info = $db->getRow($sql);
            
            if (!$info) {
                json_msg(0, '信息不存在');
            }
            
            // 更新时间
            $result = $db->update('info', ['gai_time' => date('Y-m-d H:i:s')], "id = $id");
            
            if ($result) {
                json_msg(1, '刷新成功');
            } else {
                json_msg(0, '刷新失败，请稍后重试');
            }
            break;
            
        // 删除信息
        case 'delete':
            if (empty($_POST['id'])) {
                json_msg(0, '参数错误');
            }
            
            $id = intval($_POST['id']);
            
            // 检查信息是否存在且属于当前用户
            $sql = "SELECT id FROM info WHERE id = $id AND user_id = {$curr_user['id']}";
            $info = $db->getRow($sql);
            
            if (!$info) {
                json_msg(0, '信息不存在');
            }
            
            // 开始事务
            $db->beginTransaction();
            
            // 删除图片
            $db->delete('imgs', "info_id = $id");
            
            // 删除信息
            $result = $db->delete('info', "id = $id");
            
            if ($result) {
                $db->commit();
                json_msg(1, '删除成功');
            } else {
                $db->rollback();
                json_msg(0, '删除失败，请稍后重试');
            }
            break;
            
        default:
            json_msg(0, '未知操作');
    }
    
    exit;
}
include './inc/head.php';
?>

<div class="list-container" style="background:#fff;padding:20px;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,0.1);">
    <div class="top-bar">
        <div class="title">我的发布</div>
        <div class="search-bar" style="margin-top:10px;display:flex;">
            <input type="text" id="keyword" class="form-control" placeholder="关键词搜索" style="flex:1;margin-right:10px;">
            <button type="button" id="search-btn" class="btn btn-primary">搜索</button>
        </div>
    </div>
    
    <div id="info-list" style="margin-top:20px;"></div>
    <div id="pagination"></div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 加载信息列表
    loadInfoList();
    
    // 搜索按钮点击事件
    document.getElementById('search-btn').addEventListener('click', function() {
        loadInfoList();
    });
    
    // 回车搜索
    document.getElementById('keyword').addEventListener('keydown', function(e) {
        if (e.keyCode === 13) {
            loadInfoList();
        }
    });
});

// 加载信息列表
function loadInfoList(page) {
    page = page || 1;
    
    // 获取搜索参数
    const keyword = document.getElementById('keyword').value;
    
    // 显示加载中
    document.getElementById('info-list').innerHTML = '<div style="text-align:center;padding:20px;">加载中...</div>';
    
    // 请求数据
    ajax({
        url: 'usr.php?do=list&act=list',
        method: 'POST',
        data: {
            page: page,
            keyword: keyword
        },
        success: function(res) {
            if (res.code === 1) {
                // 渲染列表
                renderInfoList(res.data.list);
                
                // 渲染分页
                document.getElementById('pagination').innerHTML = renderPagination(res.data.page, res.data.total_page);
                
                // 绑定分页事件
                bindPaginationEvents(function(page) {
                    loadInfoList(page);
                });
                
                // 绑定操作事件
                bindOperationEvents();
            } else {
                document.getElementById('info-list').innerHTML = '<div style="text-align:center;padding:20px;">暂无数据</div>';
                document.getElementById('pagination').innerHTML = '';
                showToast(res.msg);
            }
        },
        error: function() {
            document.getElementById('info-list').innerHTML = '<div style="text-align:center;padding:20px;">加载失败，请刷新重试</div>';
            document.getElementById('pagination').innerHTML = '';
            showToast('网络错误，请稍后重试');
        }
    });
}

// 渲染信息列表
function renderInfoList(list) {
    if (!list || list.length === 0) {
        document.getElementById('info-list').innerHTML = '<div style="text-align:center;padding:20px;">暂无数据</div>';
        return;
    }
    
    let html = '<table class="table">';
    html += '<tr><th width="20%">标题</th><th width="15%">类型</th><th width="15%">价格/面积</th><th width="15%">发布时间</th><th width="10%">状态</th><th width="25%">操作</th></tr>';
    
    for (let i = 0; i < list.length; i++) {
        const item = list[i];
        html += '<tr>';
        html += '<td>' + item.title + '</td>';
        html += '<td>' + item.type1_text + '/' + item.type2_text + '</td>';
        html += '<td>' + item.jiage + '元' + (item.area ? '/' + item.area + '㎡' : '') + '</td>';
        html += '<td>' + item.gai_time + '</td>';
        html += '<td>' + (item.open2 == 1 ? '<span style="color:green;">上架中</span>' : '<span style="color:red;">已下架</span>') + '</td>';
        html += '<td>';
        html += '<a href="detail.php?id=' + item.id + '&token=' + item.token + '" class="btn-detail" style="margin-right:5px;">查看</a>';
        html += '<a href="javascript:;" class="btn-status" data-id="' + item.id + '" style="margin-right:5px;">' + (item.open2 == 1 ? '下架' : '上架') + '</a>';
        html += '<a href="javascript:;" class="btn-refresh" data-id="' + item.id + '" style="margin-right:5px;">刷新</a>';
        html += '<a href="javascript:;" class="btn-delete" data-id="' + item.id + '">删除</a>';
        html += '</td>';
        html += '</tr>';
    }
    
    html += '</table>';
    
    document.getElementById('info-list').innerHTML = html;
}

// 绑定操作事件
function bindOperationEvents() {
    // 状态切换按钮
    const statusBtns = document.querySelectorAll('.btn-status');
    for (let i = 0; i < statusBtns.length; i++) {
        statusBtns[i].addEventListener('click', function() {
            const id = this.getAttribute('data-id');
            
            // 切换状态
            ajax({
                url: 'usr.php?do=list&act=status',
                method: 'POST',
                data: { id: id },
                success: function(res) {
                    showToast(res.msg);
                    if (res.code === 1) {
                        // 重新加载列表
                        loadInfoList(document.querySelector('.pagination .current') ? 
                            parseInt(document.querySelector('.pagination .current').textContent) : 1);
                    }
                },
                error: function() {
                    showToast('网络错误，请稍后重试');
                }
            });
        });
    }
    
    // 刷新按钮
    const refreshBtns = document.querySelectorAll('.btn-refresh');
    for (let i = 0; i < refreshBtns.length; i++) {
        refreshBtns[i].addEventListener('click', function() {
            const id = this.getAttribute('data-id');
            
            // 刷新时间
            ajax({
                url: 'usr.php?do=list&act=refresh',
                method: 'POST',
                data: { id: id },
                success: function(res) {
                    showToast(res.msg);
                    if (res.code === 1) {
                        // 重新加载列表
                        loadInfoList(document.querySelector('.pagination .current') ? 
                            parseInt(document.querySelector('.pagination .current').textContent) : 1);
                    }
                },
                error: function() {
                    showToast('网络错误，请稍后重试');
                }
            });
        });
    }
    
    // 删除按钮
    const deleteBtns = document.querySelectorAll('.btn-delete');
    for (let i = 0; i < deleteBtns.length; i++) {
        deleteBtns[i].addEventListener('click', function() {
            const id = this.getAttribute('data-id');
            
            // 确认删除
            confirm('确定要删除该信息吗？', function() {
                // 删除信息
                ajax({
                    url: 'usr.php?do=list&act=delete',
                    method: 'POST',
                    data: { id: id },
                    success: function(res) {
                        showToast(res.msg);
                        if (res.code === 1) {
                            // 重新加载列表
                            loadInfoList(document.querySelector('.pagination .current') ? 
                                parseInt(document.querySelector('.pagination .current').textContent) : 1);
                        }
                    },
                    error: function() {
                        showToast('网络错误，请稍后重试');
                    }
                });
            });
        });
    }
}
</script>
